<?php
class Language
{
	public $language_area;
	public $language_country;
	public $language_dir;
	public $dir;
	public function __construct($language="")
	{
		$this->dir=ROOTDIR."application/language/";
		if(empty($language))
		{
			$this->initDefaultLanguage();
		}
		else 
		{
			$this->language_area=$language;
		}
		if(empty($this->language_country)&&!empty($this->language_area))
		{
			if(is_int(strpos($this->language_area,"-")))
			{
				$this->language_country=substr($this->language_area,0,strpos($this->language_area,"-"));
			}
			else 
			{
				$this->language_country=$this->language_area;
			}
		}
		$this->initLanguageDir();
	}
	
	/*
	取得语言文件的绝对路径
	*/
	public function getFileDir($file)
	{
		$dir=$this->dir;
		if(file_exists($this->getLanguageDir().$file))
		{
			return $this->getLanguageDir().$file;
		}
		else if(file_exists($dir.$this->language_area."/".$file))
		{
			return $dir.$this->language_area."/".$file;
		}
		else if(file_exists($dir.$this->language_country."/".$file))
		{
			return $dir.$this->language_country."/".$file;
		}
		else if(file_exists($dir."en/".$file))
		{
			return $dir."en/".$file;
		}
		else 
		{
			return false;
		}
	}
	/*
	取得当前使用语言的文件夹
	*/
	public function getLanguageDir()
	{
		return $this->language_dir;
	}
	
	/*
	初始化语言文件夹
	*/
	private function initLanguageDir()
	{
		$dir=$this->dir;
		if(file_exists($dir.$this->language_area)&&!empty($this->language_area))
		{
			$this->language_dir=$dir.$this->language_area."/";
		}
		else if(file_exists($dir.$this->language_country)&&!empty($this->language_country))
		{
			$this->language_dir=$dir.$this->language_country."/";
		}
		else 
		{
			$this->language_dir=$dir."en/";
		}
	}
	
	/*
	初始化默认语言
	*/
	public function initDefaultLanguage()
	{
		if($this->getCookieLanguage())
		{
			return ;
		}
		$language=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
		preg_match_all("/[\w-]+/",$language,$language);
		$this->language_area=$language[0][0];
		@$this->language_country=$language[0][1];
		$this->setCookieLanguage();
	}
	
	/*
	从cookie中导入语言种类
	*/
	public function getCookieLanguage()
	{
		if(!@empty($_COOKIE['lang']))
		{
			$language=$_COOKIE['lang'];
			if(strpos($language,"-"))
			{
				$this->language_area=$language;
			}
			else 
			{
				$this->language_country=$language;
			}
			return true;
		}
		return false;
	}
	
	/*
	   把当前的语言种类放到cookie中
	*/
	public function setCookieLanguage($lang="")
	{
		if(empty($lang))
		{
			$lang=$this->language_area;
		}
		if(empty($lang))
		{
			$lang=$this->language_country;
		}
		if(empty($lang))
		{
			return false;
		}
		setcookie("lang",$lang,time()+365*24*3600,"/",$this->getDomain());
		return true;
	}
	
	
	public function getDomain()
	{
		if(empty($this->domain))
		{
			$domain=$_SERVER['SERVER_NAME'];
			if(strcasecmp($domain,"localhost")===0)
			{
				$this->domain=$domain;
				return $this->domain;
			}
			if(preg_match("/^(\d+\.){3}\d+$/",$domain,$domain_temp))
			{
				$this->domain=$domain_temp[0];
				return $this->domain;
			}
			preg_match_all("/\w+\.\w+$/",$domain,$domain);
			$this->domain=$domain[0][0];
			return $this->domain;
		}
		else
		{
			return $this->domain;
		}
	}	
}